<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>模块(node)常用命令</title>
</head>
<body>
    <script>

        // A. 模块规范
        //      CommonJS 规范           ES6 规范            





        // B. 模块分类
        //      内置模块 (也叫核心模块)      自定义模块       第三方模块










        // 模块规范

        // 1. CommonJS 规范

        //      导出
        // 语法:     
        // ☛   module.exports = {};

        //      导入
        // 语法:     
        // ☛   const 常量名 = require('模块标识')     模块标识: 目标模块文件路径和文件名





        // 2. ES6 规范 

        // ☆ ******** ES6 模块化, 默认导出和导入

        //      导出
        // 语法:     
        // ☛   export default {};

        //      导入
        // 语法:     
        // ☛   import 变量名 from '模块标识';

        // 注意:    
        // ES6 规范 中, 在当前文件夹里手动新建 package.json (固定名字文件)
        // 此文件是 node 环境配置文件, 设置固定字段 { "type": "module" } 告诉 node 使用 ES6 模块化规范 来翻译代码


        // ☆ ******** ES6 模块化, 命名(按需)导出和导入

        //      导出
        // 语法:     
        // ☛   export 变量定义和值;

        //      导入
        // 语法:     
        // ☛   import { 同名变量 } from '模块标识';


        // ☆ ******** ES6 模块化, 直接导入和无导出

        // 无需导出, 直接写一些待执行的代码

        //      导入
        // 语法:     
        // ☛    import '模块标识';










        // 内置模块

        // 1. fs 模块

        // 引入 fs 模块
        // 语法:     
        // ☛   import fs from 'fs';

        // 判断路径是否存在 (判断文件是否存在)
        // 语法:     
        // ☛   fs.access('目标文件路径', 回调函数);

        // 向文件中写入内容 (手动新建目标文件, 写入一些内容)
        // 语法:     
        // ☛   fs.writeFile('目标文件路径', 要写入的字符串, 回调函数);

        // 读取文件中内容 (读取目标文件内容)
        // 语法:     
        // ☛   fs.readFile('目标文件路径', 回调函数);





        // 2. path 模块

        // 引入 path 模块
        // 语法:     
        // ☛   import path from 'path';

        // 调用path模块中的方法
        // 语法:     
        // ☛   path.extname('路径字符串');                    返回路径字符串中的扩展名
        // ☛   path.join('路径字符串', ...可以多个);           拼接路径, 使用 join 方法
        // ☛   path.resolve('路径字符串', ...可以多个);        拼接路径, 使用resolve方法 (基于当前工作目录拼接路径)





        // 3. http 模块

        // 引入 http 模块
        // 语法:     
        // ☛   import http from 'http';

        // 当收到浏览器的请求后，会触发 request 事件，事件处理函数有两个形式参数 req 和 res
        server.on('request', function (req, res) {
        //     // 该函数就是处理请求响应的函数
        //     // 形参res是响应response的简写
        });

        // 形参 [ req ] 是 request 的缩写，即请求对象
        // 语法:     
        // ☛   req.url             获取请求行中的路径
        //   http://localhost:3000                       ===>   req.url 值为 '/'
        //   http://localhost:3000/api/getbooks          ===>   req.url 值为 '/api/getbooks'
        //   http://localhost:3000/index.html            ===>   req.url 值为 '/index.html'
        //   http://localhost:3000/index.html?id=1       ===>   req.url 值为 '/index.html?id=1'
        
        // ☛   req.method          获取请求行中的请求方法          比如得到 GET 、POST等等
        
        // ☛   req.headers         获取请求头

        // 形参 [ res ] 是 response 的缩写，即响应
        // 语法:     
        // ☛   statusCode = 数;            可以设置响应状态码

        // ☛   res.setHeader();            可以设置响应头
        // 例如     res.setHeader('Content-Type', 'xxx/xxx; charset=utf-8');

        // ☛   res.end(响应体);            设置响应体，并做出响应

        //      html 文件         text/html
        //      css 文件          text/css
        //      js 文件           text/javascript
        //      gif 文件          image/gif
        //      svg 文件          image/svg+xml
        //      jpeg 文件         image/jpeg
        //      png 文件          image/png
        //      ico 文件          image/x-icon










        // C. node 命令         npm 命令



        // 1. node 命令 
        // node -v                 查看版本
        // node 当前文件名          执行命令



        // 2. npm 命令
        // npm（node  package  manager）node 包 管理器    可以, 下载, 删除, 发布 包 的一个工具
        // npm init -y                   npm-初始化环境     得到项目清单 package.json 文件
        // npm i 模块包名                下载包    axios    moment
        // npm uninstall 模块包名        删除包
        // npm config list               查看 npm 的配置列表    淘宝镜像: npm config set registry https://registry.npmmirror.com/
        
        // npm i 模块包名 -g             下载全局包    nodemon
        // nodemon -v                    查看全局包 nodemon 版本
        // npm root -g                   查看全局安装路径

        // nrm -V    (这里 V 大写)       查看 nrm 版本
        // nrm ls                        查看全部可用的镜像地址
        // nrm use 左侧名字              切换 npm 下载地址

        // npm login                     登录 npmjs 网站注册的账号
        // npm publish                   使用 npm 命令发布此包到 npmjs 网站上
        // npm unpublish 包名 --force     删除已发布的包
 







    </script>
</body>
</html>